package com.erp.controller.productbrand;

import com.erp.common.annotation.Anonymous;
import com.erp.common.core.controller.BaseController;
import com.erp.common.core.domain.AjaxResult;
import com.erp.common.core.page.TableDataInfo;
import com.erp.common.utils.poi.ExcelUtil;
import com.erp.domain.ErpProductBrand;
import com.erp.service.produtcbrand.IProductBrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * --- 代码敲对！ ---
 *
 * @author CCCccc
 * @create 2025/9/1
 * 备注：商品品牌控制层
 */
// 注解表示该类为控制层
@RestController
// 注解表示该类中的所有请求路径都以"/erp/product"开头
@RequestMapping("/erp/product/brand")
public class ProductBrandController extends BaseController {
    // 自动注入
    @Autowired
    private IProductBrandService productBrandService;

    /**
     * 商品品牌信息列表查询
     */
    // 注解表示该请求路径为"/erp/product/brand/list"
    @GetMapping("/list")
    // 注解表示该方法不需要身份验证即可访问
    @Anonymous
    public TableDataInfo list(ErpProductBrand erpProductBrand) {
        // 调用分页工具类，设置分页参数
        startPage();
        // 调用商品品牌服务层的list方法，返回查询结果
        List<ErpProductBrand> list = productBrandService.list(erpProductBrand);
        // 创建ExcelUtil工具类实例，用于处理ErpProductBrand类型的数据的Excel导入导出操作
        // ExcelUtil是一个泛型类，这里指定了泛型类型为ErpProductBrand
        // ErpProductBrand是一个产品品牌实体类
        ExcelUtil<ErpProductBrand> util = new ExcelUtil<ErpProductBrand>(ErpProductBrand.class);
        System.out.println(list);
        // 返回分页结果
        return getDataTable(list);
    }

    /**
     * 新增商品品牌
     */
    // 注解表示该请求路径为"/erp/product/brand"
    @PostMapping
    // 注解表示该方法不需要身份验证即可访问
    @Anonymous
    public AjaxResult add(@Validated @RequestParam ErpProductBrand erpProductBrand) {
        return toAjax(productBrandService.add(erpProductBrand));
    }

    /**
     * 商品品牌更新
     */
    // 注解表示该请求路径为"/erp/product/brand"
    @PutMapping
    // 注解表示该方法不需要身份验证即可访问
    @Anonymous
    public AjaxResult edit(@Validated @RequestParam ErpProductBrand erpProductBrand) {
        return toAjax(productBrandService.update(erpProductBrand));
    }
}
